console.log("Array.reduce用法");

const array1 = [1, 2, 3, 4];
// reduce不传第二个参数
const total = array1.reduce((previousValue, currentValue, currentIndex) => {
  // 第一次循环 previousValue = 1（array1[0]） currentValue = 2（array1[1]）
  // 第二次循环 previousValue 是上一次的返回值 3, currentValue = 3（array1[2]）
  console.log(previousValue, currentValue, currentIndex); // 1 2 | 3 3 | 6 4  循环3次。
  const total = previousValue + currentValue;
  return total;
});
console.log("===总和====", total);

const initialValue = 0;
// reduce传了第二个参数
const sum = array1.reduce((prev, curr, index) => {
  // 四次循环
  // 第一次循环 prev 是 initialValue,curr是1（array1[0]）
  // 第二次 ......
  console.log("===", prev, curr, index); // 四次循环
  return prev + curr;
}, initialValue); // 传递了第二次参数 将作为 第一次循环的 prev
console.log("===总和====", sum);
